import axios from 'axios';

// 假设后端接口的基础 URL 是 /api
// const AUTH_BASE_URL = "/api";
const AUTH_BASE_URL = "/api";
// 登录请求数据的接口定义
export interface LoginData {
  username: string;
  password: string;
}

// 登录响应的接口定义
export interface LoginResult {
  token?: string;  // 后端返回的 token
  userInfo?: any;  // 假设返回用户信息
}

// 创建一个类来处理认证相关的 API 请求
class AuthAPI {
  /** 登录接口 */
  static async login(data: LoginData) {
    try {
      // 发送用户名和密码到后端
      const response = await axios.post<LoginResult>(`${AUTH_BASE_URL}/login/`, data, {
        headers: {
          "Content-Type": "application/json;charset=utf-8",
        },
      });

      // 假设后端返回的是 token 和 userInfo
      if (response.data.token) {
        // 将 token 存储在 localStorage 中，也可以存到 Vuex 或其他地方
        localStorage.setItem('token', response.data.token);

        // 如果需要保存用户信息，可以在这里处理
        if (response.data.userInfo) {
          localStorage.setItem('userInfo', JSON.stringify(response.data.userInfo));
        }

        // 返回登录结果
        return response.data;
      }

      // 如果没有返回 token，抛出错误
      throw new Error('登录失败');
    } catch (error) {
      console.error("登录失败:", error);
      throw error;  // 抛出错误以便调用方处理
    }
  }

  /** 注销接口 */
  static async logout() {
    try {
      // 清除存储的 token 和用户信息
      localStorage.removeItem('token');
      localStorage.removeItem('userInfo');
    } catch (error) {
      console.error("注销失败:", error);
      throw error;
    }
  }
}

export default AuthAPI;
